package modelo;
// default package
// Generated 22/10/2014 20:11:51 by Hibernate Tools 4.0.0

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;

import static javax.persistence.GenerationType.IDENTITY;

import javax.persistence.CascadeType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Persona generated by hbm2java
 */
@Entity
@Table(name = "persona", catalog = "eventos_compartidos")
public class Persona implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3369145539792339630L;
	private Integer idPersona;
	private Tipodocumento tipodocumento;
	private Domicilio domicilio;
	private int nroDocumento;
	private String apellido;
	private String nombre;
	private Date fechaNacimiento;
	private String email;
	private Usuario usuarios;
	private Set<Telefonopersona> telefonopersonas = new HashSet<Telefonopersona>(
			0);
	private Set<Salon> salons = new HashSet<Salon>(0);
	private Set<Cobro> cobros = new HashSet<Cobro>(0);
	private Set<Interesado> interesados = new HashSet<Interesado>(0);
	private Set<Propietario> propietarios = new HashSet<Propietario>(0);

	public Persona() {
	}

	public Persona(Tipodocumento tipodocumento, int nroDocumento,
			String apellido, String nombre) {
		this.tipodocumento = tipodocumento;
		this.nroDocumento = nroDocumento;
		this.apellido = apellido;
		this.nombre = nombre;
	}

	public Persona(Tipodocumento tipodocumento, Domicilio domicilio,
			int nroDocumento, String apellido, String nombre,
			Date fechaNacimiento, String email, Usuario usuarios,
			Set<Telefonopersona> telefonopersonas, Set<Salon> salons,
			Set<Cobro> cobros, Set<Interesado> interesados,
			Set<Propietario> propietarios) {
		this.tipodocumento = tipodocumento;
		this.domicilio = domicilio;
		this.nroDocumento = nroDocumento;
		this.apellido = apellido;
		this.nombre = nombre;
		this.fechaNacimiento = fechaNacimiento;
		this.email = email;
		this.usuarios = usuarios;
		this.telefonopersonas = telefonopersonas;
		this.salons = salons;
		this.cobros = cobros;
		this.interesados = interesados;
		this.propietarios = propietarios;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "idPersona", unique = true, nullable = false)
	public Integer getIdPersona() {
		return this.idPersona;
	}

	public void setIdPersona(Integer idPersona) {
		this.idPersona = idPersona;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idTipoDocumento", nullable = false)
	public Tipodocumento getTipodocumento() {
		return this.tipodocumento;
	}

	public void setTipodocumento(Tipodocumento tipodocumento) {
		this.tipodocumento = tipodocumento;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idDomicilio")
	public Domicilio getDomicilio() {
		return this.domicilio;
	}

	public void setDomicilio(Domicilio domicilio) {
		this.domicilio = domicilio;
	}

	@Column(name = "nroDocumento", nullable = false)
	public int getNroDocumento() {
		return this.nroDocumento;
	}

	public void setNroDocumento(int nroDocumento) {
		this.nroDocumento = nroDocumento;
	}

	@Column(name = "apellido", nullable = false, length = 50)
	public String getApellido() {
		return this.apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	@Column(name = "nombre", nullable = false, length = 500)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "fechaNacimiento", length = 10)
	public Date getFechaNacimiento() {
		return this.fechaNacimiento;
	}

	public void setFechaNacimiento(Date fechaNacimiento) {
		this.fechaNacimiento = fechaNacimiento;
	}

	@Column(name = "email", length = 100)
	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@OneToOne(cascade=CascadeType.ALL)
	@PrimaryKeyJoinColumn
	public Usuario getUsuarios() {
		return this.usuarios;
	}

	public void setUsuarios(Usuario usuarios) {
		this.usuarios = usuarios;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "persona")
	public Set<Telefonopersona> getTelefonopersonas() {
		return this.telefonopersonas;
	}

	public void setTelefonopersonas(Set<Telefonopersona> telefonopersonas) {
		this.telefonopersonas = telefonopersonas;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "persona")
	public Set<Salon> getSalons() {
		return this.salons;
	}

	public void setSalons(Set<Salon> salons) {
		this.salons = salons;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "persona")
	public Set<Cobro> getCobros() {
		return this.cobros;
	}

	public void setCobros(Set<Cobro> cobros) {
		this.cobros = cobros;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "persona")
	public Set<Interesado> getInteresados() {
		return this.interesados;
	}

	public void setInteresados(Set<Interesado> interesados) {
		this.interesados = interesados;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "persona")
	public Set<Propietario> getPropietarios() {
		return this.propietarios;
	}

	public void setPropietarios(Set<Propietario> propietarios) {
		this.propietarios = propietarios;
	}

}
